import type { PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace AiLlmApi {
  export interface AiLlm {
    id?: number; // 大模型ID
    title?: string; // 标题或名称
    brand?: string; // 供应商
    icon?: string; // 图标
    description?: string; // 描述
    deptId?: number; // 部门ID
    tenantId?: number; // 租户ID
    supportChat?: boolean; // 是否支持对话
    supportEmbed?: boolean; // 是否支持向量化
    supportFunctionCalling?: boolean; // 是否支持方法调用
    supportOnline?: boolean; // 是否支持联网搜索
    supportThinking?: boolean; // 是否支持深度思考
    supportMultimodal?: boolean; // 是否支持多模态
    supportTextToImage?: boolean; // 是否支持文字生成图片
    supportImageToImage?: boolean; // 是否支持图片生成图片
    supportTextToAudio?: boolean; // 是否支持文字生成语音
    supportAudioToAudio?: boolean; // 是否支持语音生成语音
    supportTextToVideo?: boolean; // 是否支持文字生成视频
    supportVideoToVideo?: boolean; // 是否支持视频生成视频
    supportReranker?: boolean; // 是否支持重排
    isVip?: boolean; // 是否vip模型
    llmEndpoint?: string; // 大模型请求地址
    llmModel?: string; // 大模型名称
    llmApiKey?: string; // 大模型 API KEY
    llmExtraConfig?: string; // 大模型其他属性配置
    llmOptions?: Record<string, any>; // 大模型其他属性配置
  }
}

// 分页查询模型信息
export function getLlmModelPage(
  data: any,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<PageResult<AiLlmApi.AiLlm>>(
    '/ai/v1/aiLlm/page',
    data,
    { desensitize, encrypt },
  );
}
/** 查询AI模型管理详情 */
export function getLlm(id: number) {
  return requestClient.get<AiLlmApi.AiLlm>(`/ai/v1/aiLlm/get?id=${id}`);
}

// 新增模型信息
export function addAiLlm(data: AiLlmApi.AiLlm) {
  return requestClient.post<any>('/ai/v1/aiLlm/addAiLlm', data);
}
/** 一键添加 */
export function quickAdd(data: AiLlmApi.AiLlm) {
  return requestClient.post<any>('/ai/v1/aiLlm/quickAdd', data);
}
/** 修改AI模型管理 */
export function updateLlm(data: AiLlmApi.AiLlm) {
  return requestClient.put('/ai/v1/aiLlm/update', data);
}

/** 删除AI模型管理 */
export function deleteLlm(id: number) {
  return requestClient.delete(`/ai/v1/aiLlm/delete`, { params: { id } });
}

/** 批量删除AI模型管理 */
export function deleteLlmList(ids: number[]) {
  return requestClient.delete(`/ai/v1/aiLlm/delete-list?ids=${ids.join(',')}`);
}

/** 导出AI模型管理 */
export function exportLlm(params: any) {
  return requestClient.download('/ai/v1/aiLlm/export-excel', { params });
}

/** 验证模型配置 */
export function verifyLlmConfig(data: AiLlmApi.AiLlm) {
  return requestClient.post<any>('/ai/v1/aiLlm/verifyLlmConfig', data);
}
/** 查询简单列表 */
export function getLlmSimpleList(data: any) {
  return requestClient.post<PageResult<AiLlmApi.AiLlm>>(
    '/ai/v1/aiLlm/simple-list',
    data,
  );
}
